-- @Author: 作者QQ2308873645
-- @Date:   2021-11-27 13:12:31
-- @Last Modified by:   作者QQ2308873645
-- @Last Modified time: 2022-06-08 19:06:03
function 任务控制类:领取群雄逐鹿任务(id)
	if 玩家数据[id].队伍 == 0  then
		发送数据(玩家数据[id].连接id, 7, "#y/参与此活动必须队伍人数达到1人")
		return 0
	elseif #队伍数据[玩家数据[id].队伍].队员数据 < 1  and DebugMode == false then
		发送数据(玩家数据[id].连接id, 7, "#y/参与此活动必须队伍人数达到1人")
		return 0
	elseif 取队伍符合等级(id, 60) == false and DebugMode == false then
		广播队伍消息(id, 7, "#y/参与此活动需要队伍所有成员等级达到60级")
		return 0
	else

		self.检查通过=""
		self.检查通过1=""
		for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
			if 活动数据.群雄逐鹿[队伍数据[玩家数据[id].队伍].队员数据[n]]==nil then
			活动数据.群雄逐鹿[队伍数据[玩家数据[id].队伍].队员数据[n]]=0
			elseif 活动数据.群雄逐鹿[队伍数据[玩家数据[id].队伍].队员数据[n]]>=1 then
				self.检查通过=玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.名称
			elseif 角色处理类:GetTaskID(玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]],"群雄逐鹿")~=0 then
				self.检查通过1=玩家数据[队伍数据[玩家数据[id].队伍].队员数据[n]].角色.名称
			end
		end
		if self.检查通过~="" then
			发送数据(玩家数据[id].连接id,7,"#Y/"..self.检查通过.."本日已经参加过挑战，无法再参赛了")
			return 0
		elseif self.检查通过1~="" then
			发送数据(玩家数据[id].连接id,7,"#Y/"..self.检查通过1.."已经领取了任务")
			return 0
		end
		self:添加群雄逐鹿任务(id)

	end
 end
function 任务控制类:添加群雄逐鹿任务(id)

 self.闯关id=tonumber(玩家数据[id].id.."561")
  任务数据[self.闯关id]={
 类型="群雄逐鹿"
 ,id=id
 ,起始=os.time()
 ,结束=3600
 ,编号=0
 ,任务id=self.闯关id
 ,地图编号=0
 ,地图名称=0
 ,NPC=0
 ,方向=0
 ,坐标=0
 ,数字id={}
 ,客户id={}
 ,关卡数量={}
 ,当前关卡=0
 ,战斗=false
 }

 	任务数据[self.闯关id].门派数据={{ID = 1043 , NPC = 104301,门派 = "化生寺"},
       {ID = 1054,NPC = 105401 ,门派 = "大唐官府"},
       {ID = 1117,NPC = 111701 ,门派 = "龙宫"},
       {ID = 1137,NPC = 113701 ,门派 = "方寸山"},
       {ID = 1124,NPC = 112401 ,门派 = "阴曹地府"},
       {ID = 1112,NPC = 111202 ,门派 = "天宫"},
       {ID = 1145,NPC = 114501 ,门派 = "魔王寨"},
       {ID = 1141,NPC = 114101 ,门派 = "普陀山"},
       {ID = 1147,NPC = 114701 ,门派 = "五庄观"},
       {ID = 1134,NPC = 113401 ,门派 = "狮驼岭"},
       {ID = 1144,NPC = 114402 ,门派 = "盘丝洞"},
       {ID = 1150,NPC = 115001 ,门派 = "凌波城"},
       {ID = 1154,NPC = 115401 ,门派 = "神木林"},
       {ID = 1156,NPC = 115601 ,门派 = "无底洞"},
                {ID = 1251,NPC = 125101 ,门派 = "花果山"},
            {ID = 1257,NPC = 125701 ,门派 = "天机城"},
            {ID = 1252,NPC = 125201 ,门派 = "女魃墓"},
       {ID = 1143,NPC = 114301 ,门派 = "女儿村"}}





 任务数据[self.闯关id].当前关卡=math.random(18)
 任务数据[self.闯关id].NPC=任务数据[self.闯关id].门派数据[任务数据[self.闯关id].当前关卡].NPC
 self.任务id组={}
 if 玩家数据[id].队伍==0 then
   self.任务id组[#self.任务id组+1]=id
  else
   for n=1,#队伍数据[玩家数据[id].队伍].队员数据 do
     self.任务id组[#self.任务id组+1]=队伍数据[玩家数据[id].队伍].队员数据[n]
      活动数据.群雄逐鹿[队伍数据[玩家数据[id].队伍].队员数据[n]]=活动数据.群雄逐鹿[队伍数据[玩家数据[id].队伍].队员数据[n]]+1
     end
   end
  for n=1,#self.任务id组 do
   self.任务临时id1=角色处理类:生成任务id(玩家数据[self.任务id组[n]])
   玩家数据[self.任务id组[n]].角色.任务数据[self.任务临时id1]=self.闯关id
     self:刷新追踪任务信息(self.任务id组[n])
    end
 self.对话内容=" #W/请你们立即前往#Y/"..任务数据[self.闯关id].门派数据[任务数据[self.闯关id].当前关卡].门派.."#W/接受考验，当前正在进行第#R/"..(#任务数据[self.闯关id].关卡数量+1).."#W/次考验。"
 发送数据(玩家数据[id].连接id,20,{"巡游天官","巡游天官",self.对话内容})
 end



function 任务控制类:完成群雄逐鹿任务(id组, 任务id)
 for n=1,#id组 do
   if 玩家数据[id组[n]]~=nil then
      self.符合抓鬼id=true
      self.抓鬼奖励参数=1
       if self.符合抓鬼id then
      		self.抓鬼奖励等级=玩家数据[id组[n]].角色.等级
      		self.抓鬼奖励经验=math.floor(self.抓鬼奖励等级*self.抓鬼奖励等级*130*self.抓鬼奖励参数)
      		self.抓鬼奖励银子=math.floor((self.抓鬼奖励等级*self.抓鬼奖励等级+math.random(2000,2500))*self.抓鬼奖励参数*5)
      		角色处理类:添加经验(玩家数据[id组[n]],self.抓鬼奖励经验,"群雄逐鹿")
          角色处理类:添加银子(玩家数据[id组[n]],self.抓鬼奖励银子,"群雄逐鹿")
          if 玩家数据[id组[n]].召唤兽.数据.参战~=0 then
          	self.抓鬼奖励等级=玩家数据[id组[n]].召唤兽.数据[玩家数据[id组[n]].召唤兽.数据.参战].等级
          	self.抓鬼奖励经验=math.floor(self.抓鬼奖励等级*100*self.抓鬼奖励参数*0.65+150)
          	玩家数据[id组[n]].召唤兽:添加经验(self.抓鬼奖励经验,id组[n],玩家数据[id组[n]].召唤兽.数据.参战,"群雄逐鹿")
          end

                   local 奖励物品 = {}
                   local 奖励概率 = {}
                   local 奖励数量 = {}
                   local 奖励总概率 = f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\群雄逐鹿.txt]], "群雄逐鹿", "奖励总概率")+0
                   for i=1,10 do
                       奖励物品[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\群雄逐鹿.txt]], "群雄逐鹿", "物品["..tostring(i).."]")
                       奖励概率[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\群雄逐鹿.txt]], "群雄逐鹿", "概率["..tostring(i).."]")+0
                       奖励数量[i]=f函数.读配置(ServerDirectory..[[配置文件\内置活动奖励\群雄逐鹿.txt]], "群雄逐鹿", "数量["..tostring(i).."]")+0
                   end
                   local 循环次数 = 取幸运值奖励(玩家数据[id组[n]].角色.幸运)
                   local 奖励次数 = 0
                   for i=1,循环次数 do
                       local 物品名称 = ""
                       local 随机奖励 = math.random(奖励总概率)
                       local 数量 = 0
                       if 随机奖励<=奖励概率[1] then
                          物品名称 = 奖励物品[1]
                          数量 = math.random(1,奖励数量[1])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[2] then
                          物品名称 = 奖励物品[2]
                          数量 = math.random(1,奖励数量[2])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[3] then
                          物品名称 = 奖励物品[3]
                          数量 = math.random(1,奖励数量[3])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[4] then
                          物品名称 = 奖励物品[4]
                          数量 = math.random(1,奖励数量[4])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[5] then
                          物品名称 = 奖励物品[5]
                          数量 = math.random(1,奖励数量[5])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[6] then
                          物品名称 = 奖励物品[6]
                          数量 = math.random(1,奖励数量[6])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[7] then
                          物品名称 = 奖励物品[7]
                          数量 = math.random(1,奖励数量[7])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[8] then
                          物品名称 = 奖励物品[8]
                          数量 = math.random(1,奖励数量[8])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[9] then
                          物品名称 = 奖励物品[9]
                          数量 = math.random(1,奖励数量[9])
                          奖励次数 = 奖励次数 + 1
                       elseif 随机奖励<=奖励概率[10] then
                          物品名称 = 奖励物品[10]
                          数量 = math.random(1,奖励数量[10])
                          奖励次数 = 奖励次数 + 1
                       end
                       if 物品名称 ~= "" and 物品名称 == "高级魔兽要诀" then
                          local 技能=取高级兽诀名称()
                          道具处理类:给予道具(id组[n],物品名称,nil,技能)
                       elseif 物品名称 ~= "" and 物品名称 == "特殊魔兽要诀" then
                          local 技能=取特殊兽诀名称()
                          道具处理类:给予道具(id组[n],物品名称,nil,技能)
                       else
                           道具处理类:给予道具(id组[n],物品名称,nil,nil,数量)
                       end
                   end
                   道具处理类:系统兽决存仓(id组[n])
                   道具处理类:系统仓库处理(id组[n])
                   广播消息("#hd/".."#S/(群雄逐鹿)".."#R/ "..玩家数据[id组[n]].角色.名称.."#Y/成功降服了群雄逐鹿，获得了#R/"..奖励次数.."#Y/次物品奖励".."#"..math.random(110))

       end
   end
 end
 self.闯关任务id=角色处理类:GetTaskID(玩家数据[id组[1]],"群雄逐鹿")
 if self.闯关任务id ==0 then
  return
 end
 任务数据[self.闯关任务id].关卡数量[#任务数据[self.闯关任务id].关卡数量+1]=任务数据[self.闯关任务id].当前关卡
 if #任务数据[self.闯关任务id].关卡数量>=18 then
    广播队伍消息(id组[1],7,"#y/恭喜你们已经完成了本轮考验")
    for n=1,#id组 do
      if 玩家数据[id组[n]]~=nil then
       角色处理类:添加银子(玩家数据[id组[n]],math.floor(玩家数据[id组[n]].角色.等级*5000),"群雄逐鹿")
       角色处理类:取消任务(玩家数据[id组[n]],self.闯关任务id)
       --角色处理类:添加活跃度(玩家数据[id组[n]],50)
      end
    end
    任务数据[self.闯关任务id]=nil
    return 0
  else
   self.复制数组={}
   for n=1,18 do
     self.允许复制=true
     for i=1,#任务数据[self.闯关任务id].关卡数量 do
       if 任务数据[self.闯关任务id].关卡数量[i]==n then
         self.允许复制=false
         end

       end

      if self.允许复制==true then
        self.复制数组[#self.复制数组+1]={序号=n,排序=math.random(1000)}
        end
     end
    table.sort(self.复制数组,function(a,b) return a.排序>b.排序 end )
    任务数据[self.闯关任务id].当前关卡=self.复制数组[math.random(1,#self.复制数组)].序号
    任务数据[self.闯关任务id].NPC=任务数据[self.闯关任务id].门派数据[任务数据[self.闯关任务id].当前关卡].NPC
     for n=1,#id组 do
     self:刷新追踪任务信息(id组[n])
     end
    广播队伍消息(id组[1],7,"#y/任务数据已经刷新，请及时查看")

   end

 end